package com.atguigu.realtime.util;

import org.wltea.analyzer.core.IKSegmenter;
import org.wltea.analyzer.core.Lexeme;

import java.io.IOException;
import java.io.StringReader;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;

public class AtguiguUtil {
    
    /**
     * 根据传入的毫秒值, 返回这个毫秒值对应的年月日
     *
     * @param ts
     * @return
     */
    public static String toDate(long ts) {
        return new SimpleDateFormat("yyyy-MM-dd").format(ts);
    }

    public static Long toShootTime(String ts)  {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = null;
        try {
            date = sdf.parse(ts);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        Long shootTime = date.getTime();
        return shootTime ;
    }

    public static String toDateHour(long ts) {
        String format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(ts);
        String substring = format.substring(0, 13);
        return substring;
    }
    
    public static List<String> ikSplit(String kw) {
        List<String> result = new ArrayList<>();
        // String -> Reader    内存流 StringReader
        StringReader reader = new StringReader(kw);
        // 创建一个 IK 的主类: 用来分词
        // 参数2: 用智能模式切词   每一字符只会用一次  我是中国人: smart  我 是 中国人.  max_word 我 是 中国 国人 中国人
        IKSegmenter seg = new IKSegmenter(reader, true);
        
        try {
            Lexeme next = seg.next();
            while (next != null) {
                String word = next.getLexemeText();
                result.add(word);
                next = seg.next();
            }
            
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        
        // 去重逻辑
        distinct(result);
        
        return result;
    }
    
    private static void distinct(List<String> result) {
        HashSet<String> set = new HashSet<>(result);
        result.clear();
        result.addAll(set);
    }
    
    public static void main(String[] args) {
        System.out.println(ikSplit("手机小米手机256g小米手机"));
    }
    
    public static String toDatTime(long ts) {
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(ts);
    }
    
    public static Long dateToTs(String date) {
        try {
            return new SimpleDateFormat("yyyy-MM-dd").parse(date).getTime();
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
    }
}